package com.adou.service;

import com.adou.common.dto.AddFieldDto;
import com.adou.common.dto.ParseHtmlDto;
import com.adou.common.dto.RunKeyFormDto;
import com.adou.common.model.DefForm;
import com.adou.service.base.BaseService;

import java.util.List;
import java.util.Map;

public interface FormModelService extends BaseService<DefForm> {
    /**
     * 新增表单
     *
     * @param defForm 表单模型类
     * @return
     */
    public int insertDefForm(DefForm defForm);

    /**
     * 更新表单
     *
     * @param defForm 表单模型类
     * @return
     */
    public int updateDefForm(DefForm defForm);

    /**
     * 删除表单
     *
     * @param defForm 表单模型类
     * @return
     */
    public int deleteDefForm(DefForm defForm);

    /**
     * 根据表单ID发布
     *
     * @param defForm 表单对象
     */
    public int deployDefForm(DefForm defForm);

    /**
     * 根据表单ID撤销发布
     *
     * @param defForm 表单对象
     */
    public int cancelDefForm(DefForm defForm);

    /**
     * 设计表单模型
     *
     * @param parsedto 模型对象
     */
    public int updateDesin(ParseHtmlDto parsedto);

    /**
     * 升级表单设计
     *
     * @param parsedto 模型对象
     */
    public int upgradeDesin(ParseHtmlDto parsedto);

    /**
     * 获取表单HTML和对应字段值
     *
     * @param formId 根据表单ID
     * @param id 记录id
     * @param flowId 根据流程ID
     */
    public Map<String, Object> getFormContentByFlowId(Long flowId, Long formId,Long id);

    /**
     * 保存表单字段值
     *
     * @param flowId 根据流程ID
     * @param formId 根据表单ID
     */
    public int setFormContentByFlowId(List<AddFieldDto> addList, Long flowId, Long formId,Long id);

    /**
     * 获取表单字段
     *
     * @param formId 根据表单ID
     */
    public Map<String, Object> getFields(Long formId);

    public Map<String, Object> deleteFormContentByIds(Long formId,String ids);

    /**
     * 手机端显示字段修改
     * @param o
     * @return
     */
    int showOrHide(RunKeyFormDto o);
}
